草庐IT

C++ 模板和指针

全部标签

在 Windows 核心文件上调用 fopen 返回 NULL 指针

我试图通过它们的绝对路径(在其他地方以编程方式确定)打开几个不同的文件,这样我就可以获得它们的SHA1哈希*,其中一些是核心Windows文件。当我尝试按如下方式打开文件时,fopen()在某些(但不是全部)文件上返回NULL(通常文件名是通过QueryFullProcessImageName获取的,但为了以防万一,我对其进行了硬编码):char*filename="c:\\windows\\system32\\spoolsv.exe";FILE*currFileRead=fopen(filename,"rb");if(currFileRead==NULL){printf("Faile

C++ 模板化流字符以十进制打印

我正在制作一个通用记录器类,它打印传递到文件中的任何内容。Logger::Instance()->write('c');Logger::Instance()->write("this");Logger::Instance()->write(5);但是我遇到了一个问题:charc='t';Logger::Instance()->write(c);它打印十进制而不是ascii:116字符串工作正常,但字符是唯一有问题的东西。我的代码:classLogger{public:staticLogger*Instance();boolopen(stringfilename);templatevoi

c++ - 完全特化的模板和 dllexport

Microsoft说:“模板不能与使用__declspec(dllimport)或__declspec(dllexport)声明的函数一起使用。”(link)。这是什么意思?我可以导出一个函数,该函数具有完全专用的模板类引用作为参数吗? 最佳答案 那不是dllexport/dllimport-特定问题,它是模板的一般问题-目前只有一个编译器实现了export的方法模板,参见ComeaustemplateFAQ了解详情。然而,完全专用的模板是不同且具体的类型,并且基本上可以与__declspec一起使用。扩展名,但有limitatio

c++ - 从类指针到 long 的 reinterpret_cast

我用这些行在Win64上编写了一个C++应用程序:Window*wnd=0;longl=reinterpret_cast(wnd);编译器在最后一行显示以下错误:error:castfrom'window::Window*'to'longint'losesprecision[-fpermissive]我使用此值将其放入SetWindowLong(WindowsAPI)函数。我无法理解这个错误。我正在使用MinGW-w64(rubenbuild)。 最佳答案 阅读我的originalcomment.问题在于sizeof(window:

c - 仍然不理解 C 中指向数字数组的指针

正如标题所说,我很笨。我试图在堆上分配空间来存储uint64_t数组的值。(它可以是任何类型的数字,但这是我用来区分值和指针的数字。)我得到了我的一个问题的答案here.我觉得我懂了。我想要做的是获取一个指向数字数组的指针,然后在运行时为该数组赋值。编辑:美国东部时间下午12:15更新。为了节省阅读量,我将原始问题留在下面,并根据评论和答案将问题缩小为以下内容。这是我的C代码:#include"stdafx.h"#include#include#defineNBRPTR3intmain(){uint64_t(*LngArr3)[NBRPTR];//pointertoarrayof3ui

c++ - C++ 指针是否跨 EXE 和 DLL 工作

我有一个C++应用程序,它有许多静态ibs(*.lib)和DLL。我在我的EXE中创建一个对象,然后我使用函数调用将指向该对象的指针从一个库传递到另一个库。在这个指针从主EXE移动到DLL函数的过程中,我想知道它会不会有什么问题,或者我需要注意什么预防措施。Main.EXEwith3staticlibs(A.lib,B.lib,C.lib)Main.EXEalsolinkswith2DLL's-d1.dll,d2.dll.EachofthesestaticlibraryandDLLalsostaticallylinkstoastaticlibraryX.lib.调用流程:main()i

windows - 是否可以使用偏移指针释放内存?

假设我在内存中分配了一个包含字符串"ABCDEFG"的内存,但我只有一个指向'E'的指针。是否有可能在win32上释放该block,给定一个在block内但不在开始处的指针?任何分配方法都可以,但Heap*函数将是阻力最小的路径。如果不是native解决方案,是否有任何编写的自定义内存管理器提供此功能?编辑:这不是马虎的借口。我正在开发一个使用100%编译时元数据的自动内存管理系统。这个奇怪的要求似乎是唯一阻碍它工作的东西,即便如此,它也只需要基于数组(可切片)的数据类型。 最佳答案 运行时库中的内存分配例程可以根据每个分配bloc

windows - 从 C++/Cx 中的框架对象转换为模板化类

我目前正在我的WinRT项目中创建一个新容器。此容器的行为类似于ListView,因此我决定在其属性中使用类似的名称。我为ItemsSource创建了一个DependencyProperty来模仿内置ItemsControl(其他列表的抽象父级)。ItemsControl将ItemsSource定义为Platform::Object^,所以我也这样做了。这很好用。稍后,是时候创建要进入列表的项目,用指定的ItemsTemplate实例填充它们,并设置它们的数据上下文。这意味着我需要从Platform::Object^实际转换ItemsSource变成可迭代的东西。不幸的是,要将它转换为

c++ - 删除静态指针指向的动态内存

我有以下结构(简化):classmyType{staticchar*data;//moreprivatedataherepublic://publicinterfacehere};data是myType的所有实例之间共享的资源,它指向一个动态分配的内存(由其中一个实例在初始化时分配)。到目前为止一切顺利。当我需要释放data指向的内存时,问题就出现了。引用计数不是这里的解决方案,因为在某个执行点没有myType的单个实例是一种有效且可能的情况-稍后可以创建一个新实例-因此数据必须保留。我需要在卸载驱动程序时释放内存,但卸载与myType对象的实际销毁无关,因此我不得不手动释放data.

c# - 如何在 Windows 10 UWP 中为模板 Gridview 设置视觉状态管理器?

我知道VisualStateManager可以在更改屏幕UWP大小时更改控件属性。但我不知道如何为DatatemplateGridview使用VisualStateManager?如何更改属性Image控件,TextBlock控件?请帮我解决这个问题。 最佳答案 一种方法是将DataTemplate包装在UserControl中: 关于c#-如何在Windows10UWP中为模板Gridview设置视觉状态管理器?,我们在StackOverflow上找到一个类似的问题: